Por favor ayuda a encontrar errores en mi código:
function multipleOfIndex(array) { return array.forEach( item => console.log(item%array.indexOf(item) === 0) ) } console.log(multipleOfIndex([68, -1, 1, -7, 10, 10])) // false, true, false, false, false, falseobviamente, estaba esperando
console.log(multipleOfIndex([68, -1, 1, -7, 10, 10])) // false, true, false, false, false, true¡Gracias!
El problema es confiar en indexOf cuando más de un valor es el mismo en la matriz: array.indexOf(10) siempre es 4 , consulte el registro ampliado aquí:
function multipleOfIndex(array) { return array.forEach( item => console.log(item,array.indexOf(item),item%array.indexOf(item) === 0) ) } console.log(multipleOfIndex([68, -1, 1, -7, 10, 10])) // false, true, false, false, false, false La solución es usar el parámetro index forEach (2º) https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
function multipleOfIndex(array) { return array.forEach( (item,idx) => console.log(item%idx === 0) ) } console.log(multipleOfIndex([68, -1, 1, -7, 10, 10])) // false, true, false, false, false, falseEl método [indexOf] devuelve el primer índice de un elemento dado que se puede encontrar en la matriz. Si no existe, devuelve - 1. Entonces, el valor [indexOf] de los últimos 10 es 4.